package com.quectel.constant.core.household;

import com.quectel.constant.core.eventrecord.PersonAccessRecordConstants;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;

import java.util.Date;

/**
 * @author caolu
 * @email louis.cao@quectel.com
 */
public class HouseholdConstants {

    public static final String ASK_TIME = "ask_time";

    /*
     * 社会关系查询标识
     */

    /**
     * 全部
     */
    public static String RELATION_RANGE_FLAG_ALL = "0";
    /**
     * 家庭
     */
    public static String RELATION_RANGE_FLAG_FAMILY = "1";
    /**
     * 社会
     */
    public static String RELATION_RANGE_FLAG_SOCIAL = "2";


    /**
     * 网格楼栋筛选
     */
    public static final String BUILDING_IDS = "buildingIds";

    /**
     * 跟进记录 askTime范围查询
     */
    public static final Pair<String, String> ASK_TIME_SLOT_KEY_PAIR = ImmutablePair.of("askTimeBegin", "askTimeEnd");


    public static final Byte ID_CARD = 1;
    /**
     * 重点人员查询标识
     */
    public static final String FOCUS_GROUPS_FLAG = "focusGroupsFlag";
    /**
     * 人员特征筛查标识
     */
    public static final String SEARCH_KEYS_STRING = "searchKeysString";
    /**
     * 人员标签筛选标识
     */
    public static final String SEARCH_LABEL_STRING = "searchLabelsString";
    /**
     * 人员年龄范围
     */
    public static final String SEARCH_RANGE_STRING = "searchRangeString";

    /**
     * 重点特征筛查flag,用于sql中
     */
    public static final String TAG_KEYS = "tagKeys";
    /**
     * 标签特征筛查flag,用于sql中
     */
    public static final String LABEL_KEYS = "labelKeys";
    /**
     * 年龄范围筛查flag,用于sql中
     */
    public static final String AGE_RANGE_KEYS = "ageRangeKeys";

    /**
     * 常住人口
     */
    public static final Byte RESIDENT_POPULATION = 1;
    /**
     * 流动人口
     */
    public static final Byte TRANSIENT_POPULATION = 2;



    /*
     * 人员在房间上的角色
     */
    /**
     * 业主
     */
    public static final Byte IDENTITY_CATEGORY_OWNER = 1;
    /**
     * 租户
     */
    public static final Byte IDENTITY_CATEGORY_TENANT = 2;

    /**
     * 家人
     */

    public static final Byte IDENTITY_CATEGORY_FAMILY = 3;

    @AllArgsConstructor
    public static enum IsAtHomeEnum {
        /**
         * 未知
         */
        UNKNOWN((byte) 0),
        /**
         * 在家
         */
        AT_HOME((byte) 1),
        /**
         * 在外
         */
        NOT_AT_HOME((byte) 2);

        @Getter
        private final Byte isAtHome;
    }


    /**
     * 住户进出时间内部类
     */
    @Data
    public static class HouseHoldExtraAttr {
        /**
         * 时间
         */
        private Date eventTime;

        /**
         * 进或出 1进 2出
         *
         * @see PersonAccessRecordConstants.InOrOutEnum
         */
        private Byte inOrOut;

        private String snapImages;
    }


    @AllArgsConstructor
    public static enum FollowSourceType {
        /**
         * 系统管理员
         */
        SYS_USER((byte) 1),
        /**
         * 物业员工
         */
        EMP((byte) 2),
        /**
         * 网格员
         */
        GRID_MEMBER((byte) 3);

        @Getter
        private final Byte type;
    }

}
